package com.ge.boot08rpc.service;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

import java.util.HashMap;
import java.util.Map;

/**
 * 测试 WebClient 远程访问
 */

@Service
public class WebClientService {

    public Mono<String> doQuery(String param) {

        // 创建WebClient客户端
        WebClient webClient = WebClient.create();

        // 请求参数map
        Map<String, String> map = new HashMap<>();
        map.put("param", param);

        // .get()指定请求方式
        Mono<String> mono = webClient.get()
                // 指定请求路径，GET请求在请求路径中拼接参数
                .uri("URL?param={param}", param)
                // 指定接受请求的媒体类型
                .accept(MediaType.APPLICATION_JSON)
                // 请求头信息
                .header("Authorization", "")
                // 执行，获取返回结果
                .retrieve()
                // 响应体转为Mono
                .bodyToMono(String.class);

        return mono;
    }
}
